package com.hsj.other;

import com.hsj.domain.Book;
import org.springframework.beans.factory.FactoryBean;

/**
 * 实现了  FactoryBean接口 将类型放入， 可以通过 new DogFactoryBean() 获取对应的 Dog对象，
 *FactoryBean自身是造不出来对象的。 造出来的是传入范型的对象
 *
 */
public class DogFactoryBean implements FactoryBean<Book> {

    // 通过bean工厂  创建想要的对象， 可以在创建对象之前 做一系列的检查或校验工作
    @Override
    public Book getObject() throws Exception {
        System.out.println("在创建对象前，做一些检查，例如创建redis连接对象前 先去判断有没有配置内容");
        Book book = new Book();
        System.out.println(" new 完对象之后 对该对象的属性进行一系列的初始化");
//        book.setName("xxxx");
        return book;
    }

    // 设置 返回的对象的类型，如果范型传入的是接口， 那么创建出来的也是一个接口
    @Override
    public Class<?> getObjectType() {
        return Book.class;
    }

    @Override
    public boolean isSingleton() {
        return FactoryBean.super.isSingleton();//设置是否  创建单例对象 默认false；
//        return true;//  造出来就都是单例对象了
    }
}
